package io.jenkins.plugins.sample;

import hudson.model.Run;
import jenkins.model.RunAction2;

import javax.annotation.CheckForNull;

/**
 * 实现 RunAction2 接口，以便添加到 Run 的 Action 能够恰当地引用 Run
 * @author chensj
 * @date 2019-11-22 21:49
 */
public class HelloWorldRunAction implements RunAction2 {

    public HelloWorldRunAction(String name) {
        this.name = name;
    }

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    /**
     * 	Run 存储在一个瞬态动作中，所以这个字段不会被序列化到磁盘上。
     */
    private transient Run run;

    /**
     * 	首次将此操作附加到 Run 时设置该字段。
     * @param run
     */
    @Override
    public void onAttached(Run<?, ?> run) {
        this.run = run;
    }

    /**
     * 	从磁盘加载此操作时设置该字段。
     * @param run
     */
    @Override
    public void onLoad(Run<?, ?> run) {
        this.run = run;
    }

    /**
     * 这将使 Run 可用于 Jelly 视图 — 它不能访问私有字段。
     * @return
     */
    public Run getRun() {
        return run;
    }



    @CheckForNull
    @Override
    public String getIconFileName() {
        return  "document.png";
    }

    @CheckForNull
    @Override
    public String getDisplayName() {
        return "Run Action Greeting";
    }

    @CheckForNull
    @Override
    public String getUrlName() {
        return "run-greeting";
    }
}
